package com.xyy.saas.payment.payment.core.service;


import com.xyy.ec.order.dto.pay.XydOrderInfoDto;
import com.xyy.saas.payment.adpater.xydLoan.core.dto.XydNotifyAuthCreditDto;
import com.xyy.saas.payment.adpater.xydLoan.core.dto.XydNotifyCancelRepaymentDto;
import com.xyy.saas.payment.adpater.xydLoan.core.dto.XydOrderDetailInfoDto;
import com.xyy.saas.payment.adpater.xydLoan.core.req.*;
import com.xyy.saas.payment.adpater.xydLoan.core.resp.XydMerchantInfoSyncResp;
import com.xyy.saas.payment.adpater.xydLoan.core.resp.XydOrderValidVerifyResp;
import com.xyy.saas.payment.cores.param.Pair;

import java.util.List;

/**
 * @author wangzeqi
 */
public interface XydCreditLoanService {

    /**
     * 通知授信结果
     */
    boolean notifyAuthCredit(XydNotifyAuthCreditDto xydNotifyAuthCreditDto);

    List<String> caseMethod(List<Pair> params);

    XydMerchantInfoSyncResp merchantInfoSync(XydMerchantInfoSyncReq xydMerchantInfoSyncReq);

    List<XydOrderInfoDto> historyOrderInfoSync(XydHistoryOrderInfoSyncReq xydHistoryOrderInfoSyncReq);

    XydOrderValidVerifyResp orderValidVerify(XydOrderValidVerifyReq xydOrderValidVerifyReq);

    XydOrderDetailInfoDto lendingOrderInfo(XydLendingOrderInfoReq xydLendingOrderInfoReq);

    boolean notifyRepaymentResults(XydNotifyRepaymentResultsReq xydNotifyRepaymentResultsReq);

    boolean notifyLoanResult(XydNotifyLoanResultReq xydNotifyLoanResultReq);
    void addRepayPlanResult(XydNotifyLoanResultReq resultReq);

    boolean notifyLockOrder(XydNotifyLockOrderReq xydNotifyLockOrderReq);

    boolean syncCreditNodeStatus(XydSyncCreditNodeStatusReq xydSyncCreditNodeStatusReq);

    /**
     * 取消还款
     * @param xydNotifyCancelRepaymentDto
     * @return
     */
    boolean cancelRepayment(XydNotifyCancelRepaymentDto xydNotifyCancelRepaymentDto);

    void initRepayPlan(List<String> payNoList);
}
